Frida 安卓逆向破解辅助Hook 您所在的位置:网站首页 frida 下载 Frida 安卓逆向破解辅助Hook

Frida 安卓逆向破解辅助Hook

2023-09-13 05:11| 来源: 网络整理| 查看: 265

用到的工具

Frida夜神模拟器或者手机Python3.7.2Window系统

安装python

Python3.7.2 下载地址

win+R 输入cmd,在控制台中输入python,看到如下信息说明安装成功

在这里插入图片描述

安装Frida

在命令行中输入

pip install frida pip install frida-tools

安装完成后再命令行中输入

frida --version

在这里插入图片描述 安装成功

安装模拟器 或者使用手机(这里使用模拟器)

夜神模拟器下载地址

下载安装frida-server 并安装到模拟器或者手机上 需要使用和frida同一个版本 这里使用14.2.13 frida-server下载地址

在这里插入图片描述 有四个Android的版本:查看模拟器或者手机下载对应版本

使用夜神模拟器演示查看方法: 使用ADB 查看

打开命令行 输入夜神模拟器安装目录下的nox_adb.exe路径 shell getprop ro.product.cpu.abi 在这里插入图片描述 这里模拟器使用的是x86 选择上面下载地址中的frida-server-14.2.13-android-x86 版本

下载完成 在这里插入图片描述 改名为 frida-server

在这里插入图片描述 将这个文件复制到手机里 目录为 /data/local/tmp/

// 连接adb adb connect 127.0.0.1 62001

命令行输入 adb push D:\frida-server /data/local/tmp/

在模拟器或者手机中文件夹可以看到 在这里插入图片描述

安装成功后在手机上启动服务

打开命令行 链接adb设置转发端口 $ D:\SoftWare\Nox\bin\nox_adb.exe forward tcp:27042 tcp:27042

shell连接手机 $ D:\SoftWare\Nox\bin\nox_adb.exe shell

输入su 切换到root用户 $ su

切换目录 $ cd /data/local/tmp

输入chmod 获取权限 $chmod 777 frida-server

启动 frida-server $ ./frida-server

在这里插入图片描述

测试是否启动成功

打开一个新的命令行 当前这个不要关掉输入frida-ps -R 获取启动frida-server的手机上正在运行的应用 在这里插入图片描述 显示这个说明安装成功

创建一个用来被自己破解的安卓应用 AndroidStudio3.5下载地址 配置好AndroidStudio环境 (包括AndroidSDK ,JDK,Gradle等 ) 打开AndroidStudio创建安卓空项目 在这里插入图片描述

在布局文件上添加安卓界面 在这里插入图片描述 在MainActivity 中添加代码控制App逻辑 在这里插入图片描述 打包出APK到模拟器上安装 在这里插入图片描述 点击设置文字按钮之后中间的文字变成按钮点击了~ 说明apk成功运行

在这里插入图片描述

接下来用frida hook把一步一步这个按钮功能改了

需要一些python代码以及javascript代码

先编写python代码尝试执行frida 的功能

import frida # 获取模拟器或者手机上已连接的设备 device = frida.get_remote_device() print(device)

打开命令行执行python脚本

在这里插入图片描述 打印出Device的信息说明成功与手机系统通信

接下来完善脚本

import frida # 获取模拟器或者手机上已连接的设备 device = frida.get_remote_device() # print(device) # 获取device上的所有app applications = device.enumerate_applications() for application in applications: print(application)

打印出手机上已安装的app则成功 在这里插入图片描述 从打印出的列表中找到刚才装的应用包名为com.example.hookapp

接下来附加到应用

import frida # 获取模拟器或者手机上已连接的设备 device = frida.get_remote_device() # print(device) # 获取device上的所有app # applications = device.enumerate_applications() # for application in applications: # print(application) # 附加到应用 session = device.attach("com.example.hookapp") jsScript = """ console.log('this is javascript code') """ # 加载Javascript代码 script = session.create_script(jsScript) # 执行 script.load()

执行后打印出 this is javascript code 成功 在这里插入图片描述

因为大量的hook操作需要在javascript中执行 所以将javascript代码独立出来 创建文件hook.js ,找到需要hook的函数

写下代码

// 程序入口 Java.perform(function() { // 获取类 var clazz = Java.use("com.example.hookapp.MainActivity"); // 获取类中所有函数 var methods = clazz.class.getDeclaredMethods(); console.log("have method count:"+methods.length); if(methods.length > 0){ //遍历函数名 methods.forEach(function(method){ console.log(method); }); } });

修改python执行脚本 hook.py

import frida # 获取模拟器或者手机上已连接的设备 device = frida.get_remote_device() # print(device) # 获取device上的所有app # applications = device.enumerate_applications() # for application in applications: # print(application) # 附加到应用 session = device.attach("com.example.hookapp") # jsScript = """ # console.log('this is javascript code') # """ file = open("hook.js",mode='r',encoding='UTF-8') scr = file.read() # 加载Javascript代码 script = session.create_script(scr) # 执行 script.load()

在命令行 将目录切换到python脚本目录之后执行

$ cd D:\Developer\Hook\script $ D: $ hook.py

在命令行中显示两个函数 在这里插入图片描述 接下来 hook ShowWord这个按钮监听的函数

匿名函数参数需要和原函数一样 Java.use(类名).方法名.implementation = function(a) { return 调用一次方法() }

修改hook.js

// 程序入口 Java.perform(function() { // 获取类 var clazz = Java.use("com.example.hookapp.MainActivity"); // 获取类中所有函数 // var methods = clazz.class.getDeclaredMethods(); // console.log("have method count:"+methods.length); // if(methods.length > 0){ // //遍历函数名 // methods.forEach(function(method){ // console.log(method); // }); // } clazz.ShowWord.implementation = function(a) { console.log("Hook success") return this.ShowWord("this is my hook method"); } });

修改hook.py 加上等待系统输入让程序暂停等待hook

import sys sys.stdin.read() import frida import sys # 获取模拟器或者手机上已连接的设备 device = frida.get_remote_device() # print(device) # 获取device上的所有app # applications = device.enumerate_applications() # for application in applications: # print(application) # 附加到应用 session = device.attach("com.example.hookapp") # jsScript = """ # console.log('this is javascript code') # """ file = open("hook.js",mode='r',encoding='UTF-8') scr = file.read() # 加载Javascript代码 script = session.create_script(scr) # 执行 script.load() sys.stdin.read()

执行hook.py

在这里插入图片描述

成功hook 按钮 并修改



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有